home *** CD-ROM | disk | FTP | other *** search
-
-
- Bedburg,den 15.04.1989
-
- RESOURCE - ANALYSER UND REASSEMBLER V1.20
-
-
- DIESES PROGRAMM IST PUBLIC DOMAIN UND DARF BELIEBIG KOPIERT UND WEITERGEGEBEN
- WERDEN.
- ALLE ZUM PROGRAMM GEHÖRENDEN DATEIEN MÜSSEN SICH IM ORDNER 'R_A_U_R1.20' AUF
- DEM LAUFWERK BEFINDEN VON DEM AUCH GFA-BASIC ODER DER BEILIEGENDE RUN-ONLY-
- INTERPRETER GESTARTET WIRD!
- DAS ERZEUGTE REASSEMBLERLISTING WIRD IN DIE ROOT DES LAUFWERKS GESCHRIEBEN
- UND HAT IMMER DIE BEZEICHNUNG 'RSC_QUEL.Q'.
-
- Da ich davon ausgehe, daß Leute,die RSC-Files analysieren und/oder in Assembler
- programmieren, dies nicht mit einem Farbmonitor (iiiih !!) tun, habe ich mir
- auch nicht die Mühe gemacht, dieses Programm an eine andere als die HOHE AUF-
- LÖSUNG anzupassen.
-
- Das Programm ist dazu gedacht, bestehende RSC-Files zu analysieren und/oder zu
- reassemblieren, um einen lesbaren Quelltext zu erhalten.
- Diesen Quelltext kann man entweder direkt in ein Programm einbinden oder
- bearbeiten und erneut assemblieren, um zu kürzeren RSC-Files zu gelangen.
-
- Das Programm erstellt Quelltexte für den Profimat © und den GFA-Assembler ©.
- Mit kleinen Änderungen müßten die Quelltexte aber auf jedem Assembler zu
- verarbeiten sein, der mehr als 8 Zeichen für Labels erlaubt.
-
- Beim GFA - Assembler ist es mir bisher noch nicht gelungen, mit dem Linker
- ein Binär-File zu erstellen. Immer bricht der Linker mit einer Fehlermeldung
- "ungerade Adresse" ab.
-
- Die Assemblierung mit dem Profimat mit der Option *.B ergibt im Allgemeinen
- keinerlei Probleme, bis auf die Fehlermeldung 'Puffer voll' bei zu vielen und
- zu langen Strings. Die erzeugten Files sind aber immer um 8 Bytes zu lang,
- sodaß sie um diese Anzahl Bytes gekürzt werden müssen.(4 Bytes beim GFA -
- Assembler)
-
- Um trotzdem zu einem neuen RSC-File zu kommen habe ich mich bisher eines
- kleinen Tricks bedient.
- Ich erzeuge mit dem Assembler zuerst eine normale Programmdatei(natürlich
- ohne die Optimierungs-Optionen), die ich mir dann mit einem Monitorprogramm
- in den Speicher ziehe und ohne Header und anhängende Leerbytes (4 Nullbytes
- bzw. 8 ) wieder auf die Diskette schiebe.
-
- Den gleichen Erfolg erziehlt man auch mit BLOAD und BSAVE in Basic.
- Folgendes kleine Programm kann dabei helfen:
-
- DIM feld%(66000/4) ! PLATZ AUCH FÜR DAS LÄNGSTE RSC-FILE
- adr%=V:feld%(0)
- OPEN "I",#1,"RSC_QUEL.PRG" ! ERZEUGTES ASSEMBLERPROGRAMM
- len%=LOF(#1) ! LÄNGE ERFRAGEN
- CLOSE #1
- BLOAD "RSC_QUEL.PRG",adr% ! PROGRAMM ALS BLOCK LADEN
- ! UND WIEDER ABSPEICHERN
- BSAVE "RSC_QUEL.RSC",adr%+28,len%-32 ! - HEADER + 4 LEERBYTES AM ENDE
- (len%-36) ! FÜR PROFIMAT
- END
-
- Vieleicht kann mir ja mal einer den Trick mit dem Linker verraten.
-
- Die so erzeugten RSC-Files laufen einwandfrei und können auch wieder in ein
- RSC-Construction Set eingeladen werden. Alle Änderungen gehen dabei natürlich
- verloren.
-
-
-
-
- ICONBLK-Struktur:
-
- In allen Dokumentationen wird angegeben, daß die ICONBLK-Struktur 36 Bytes
- umfast und das letzte Word IB_RESVD = 0 sein muß.
- In allen untersuchten RSC-Files (auch die im ROM meines Rechners) besteht diese
- Struktur jedoch immer nur aus 34 Bytes, sodaß ich davon ausgehe, daß dieses
- Word vernachlässigt werden kann. Wird dieses Word jedoch mitgeschrieben, so
- verlängert sich das neue File pro Icon um 2 Byte.
-
- OB_FLAGS:
-
- Das OB_flag "Indirect" wird von diesem Programm nicht ausgewertet.
-
- 1.) weil eine vernünftige Anwendung diese Flags für mich nicht erkennbar
- ist.
- 2.) weil dieses Flag von allen mir bekannten RSC-Construction-Sets nicht
- gesetzt werden kann. Bisher ist mir auch noch kein RSC-File unter-
- gekommen, in dem diese Flag gesetzt war.
-
- Files, in denen dieses Flag Verwendung findet, können deshalb nicht korrekt
- bearbeitet werden.
-
- Flags, die nicht von DR dokumentiert sind und deshalb von Construction Set zu
- Construction Set unterschiedlich gesetzt und interpretiert werden, kann dieses
- Programm natürlich auch nicht bearbeiten,weil es ihren Sinn nicht erraten kann.
- Diese Flags werden zwar als gesetzt erkannt, im Programm aber als "unbekannte
- Flags" ausgewiesen. Je nach Sinn dieser Flags, kann es zu Fehlverhalten des
- Programms kommen.(muß es aber nicht)
-
-
- OB_STATE:
-
- Die Status-Flags "DRAW3D" und "WHITEBAK", die erst ab GEM 2.0 implementiert
- sind werden erkannt und angezeigt.
-
-
- USERBLOCK-STRUKTUR:
-
- Nach allen meinen bisherigen Erkenntnissen kann diese Struktur erst bei Lauf-
- zeit des Programms erzeugt werden, sodaß sich eine Einbindung für mich er-
- übrigte.Diese Struktur wird also nicht unterstützt.
-
-
- Die Ausgabe der Objektbäume auf dem Bildschirm kann mit der ESC-Taste jederzeit
- abgebrochen werden. Bei der Ausgabe der freien Strings und Images funktioniert
- dies nicht.
-
- WAS NATÜRLICH NICHT FUNKTIONIEREN KANN, IST DIE RICHTIGE DRUCKERAUSGABE VON
- STEUERZEICHEN, DIE IN STRINGS ENTHALTEN SIND ODER AUCH FÜR SONDERZEICHEN, FÜR
- DIE DER DRUCKER NICHT ANGEPAßT IST. (Z.B. ≤,⇨,·,⌠)
-
-
- Nun noch ein Wort die Assemblerbenutzer:
-
- Beim Assemblieren (speziell der ROM-RSC Daten) kann es schon mal vorkommen,daß
- die Fehlermeldung "Label nicht definiert" (oder etwas Ähnliches) erscheint.
- Dies hat seine Ursache in der Verwendung von 'Hochkommata' im String, was kein
- Assembler mag. Ersetzt man die Hochkommas durch den entsprechenden ASCII-Code,
- so gibt der Assembler Ruhe.
-
- Für alle, die sich einmal die RSC-Files im ROM anschauen wollen die Adressen:
-
- ROM-TOS vom BLITTER-TOS 1.2
- 06.02.1986
-
- $FD49C2 $FD5BEC
- $FD5D10 $FD6E06
- $FD89D6 $FD977A
-
-
- DIE REASSEMBLIERUNG VON RSC-FILES AUS DEN ROM'S FUNKTIONIERT NICHT KORREKT,
- DA DIESE VON HAND ÜBERARBEITET SIND UND TABELLEN ENTHALTEN, DEREN BEDEUTUNG
- MIR UNBEKANNT SIND.
-
-
-
- Für jede Anregung und Kritik an meiner Arbeit bin ich dankbar, denn nichts ist
- so gut, daß es nicht verbesserungsfähig wäre.
-
- Meine Adresse: Heinz Lurz
- Schützendelle 63
- 5012 Bedburg
-
-
- Dann viel Spass mit dem Programm
-
-
-
-
-
-
-